<!DOCTYPE html>
<!-- saved from url=(0025)./explore.html -->
<html>

<head>
  <!--facebook域名验证-->
  <meta name="facebook-domain-verification" content="9qvi0f0vjzm9wba3xst5291qrce4rw" />
  <!--谷歌分析工具-->
  <!--https://www.imhunk.com/install-google-webmasters-and-google-analytics/#title1-->
  <meta name="google-site-verification" content="_glN7pkglI6X0zN5WcqtUqWcdsZYrHjodY0N-RU1O08" />
  <!-- Google tag (gtag.js) -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=G-VEDJEGSS57"></script>
  <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'G-VEDJEGSS57');
  </script>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <style type="text/css">
    .turbo-progress-bar {
      position: fixed;
      display: block;
      top: 0;
      left: 0;
      height: 3px;
      background: #0076ff;
      z-index: 2147483647;
      transition:
        width 300ms ease-out,
        opacity 150ms 150ms ease-in;
      transform: translate3d(0, 0, 0);
    }

    .payNum {
      padding: 0 10px;
      height: 40px;
      border: 1px solid #737070;
      border-radius: 10%;
      line-height: 40px;
      margin: 10px 20px 0;
      color: white;
      cursor: pointer;
    }

    .numImg {
      width: 25px;
      height: 25px;
      display: inline-block;
      margin-right: 4px;
    }

    .numAdd {
      display: inline-block;
      color: red;
      margin-left: 4px;
    }
  </style>
  <!-- <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> -->
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script>
  <!-- 引入 Axios -->
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script src="./common/request.js"></script>
  <script type="text/javascript" async="" src="./js/js"></script>
  <script src="./js/347575881032536" async=""></script>
  <script async="" src="./js/fbevents.js.下载"></script>
  <script async="" src="./js/gtm.js.下载"></script>
  <script type="text/javascript" async="" src="./js/mixpanel-2-latest.min.js.下载"></script>
  <script
    type="text/javascript">window.NREUM || (NREUM = {}); NREUM.info = { "beacon": "bam.nr-data.net", "errorBeacon": "bam.nr-data.net", "licenseKey": "NRJS-a03c265a2aab27c30fa", "applicationID": "1517344485", "transactionName": "IQ5aFkQNCQ9VRUoUUgUER01SCxYAX0EAFg==", "queueTime": 0, "applicationTime": 12, "agent": "" }</script>
  <script
    type="text/javascript">(window.NREUM || (NREUM = {})).init = { ajax: { deny_list: ["bam.nr-data.net"] } }; (window.NREUM || (NREUM = {})).loader_config = { licenseKey: "NRJS-a03c265a2aab27c30fa", applicationID: "1517344485" };;/*! For license information please see nr-loader-rum-1.246.1.min.js.LICENSE.txt */
      (() => { "use strict"; var e, t, n = { 234: (e, t, n) => { n.d(t, { P_: () => h, Mt: () => m, C5: () => s, DL: () => w, OP: () => j, lF: () => S, Yu: () => _, Dg: () => v, CX: () => c, GE: () => A, sU: () => T }); var r = n(8632), i = n(9567); const a = { beacon: r.ce.beacon, errorBeacon: r.ce.errorBeacon, licenseKey: void 0, applicationID: void 0, sa: void 0, queueTime: void 0, applicationTime: void 0, ttGuid: void 0, user: void 0, account: void 0, product: void 0, extra: void 0, jsAttributes: {}, userAttributes: void 0, atts: void 0, transactionName: void 0, tNamePlain: void 0 }, o = {}; function s(e) { if (!e) throw new Error("All info objects require an agent identifier!"); if (!o[e]) throw new Error("Info for ".concat(e, " was never set")); return o[e] } function c(e, t) { if (!e) throw new Error("All info objects require an agent identifier!"); o[e] = (0, i.D)(t, a), (0, r.Qy)(e, o[e], "info") } const d = e => { if (!e || "string" != typeof e) return !1; try { document.createDocumentFragment().querySelector(e) } catch { return !1 } return !0 }; var u = n(7056), l = n(50); const f = () => { const e = { mask_selector: "*", block_selector: "[data-nr-block]", mask_input_options: { color: !1, date: !1, "datetime-local": !1, email: !1, month: !1, number: !1, range: !1, search: !1, tel: !1, text: !1, time: !1, url: !1, week: !1, textarea: !1, select: !1, password: !0 } }; return { feature_flags: [], proxy: { assets: void 0, beacon: void 0 }, privacy: { cookies_enabled: !0 }, ajax: { deny_list: void 0, block_internal: !0, enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, distributed_tracing: { enabled: void 0, exclude_newrelic_header: void 0, cors_use_newrelic_header: void 0, cors_use_tracecontext_headers: void 0, allowed_origins: void 0 }, session: { domain: void 0, expiresMs: u.oD, inactiveMs: u.Hb }, ssl: void 0, obfuscate: void 0, jserrors: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, metrics: { enabled: !0, autoStart: !0 }, page_action: { enabled: !0, harvestTimeSeconds: 30, autoStart: !0 }, page_view_event: { enabled: !0, autoStart: !0 }, page_view_timing: { enabled: !0, harvestTimeSeconds: 30, long_task: !1, autoStart: !0 }, session_trace: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, harvest: { tooManyRequestsDelay: 60 }, session_replay: { autoStart: !0, enabled: !1, harvestTimeSeconds: 60, sampling_rate: 50, error_sampling_rate: 50, collect_fonts: !1, inline_images: !1, inline_stylesheet: !0, mask_all_inputs: !0, get mask_text_selector() { return e.mask_selector }, set mask_text_selector(t) { d(t) ? e.mask_selector = t + ",[data-nr-mask]" : null === t ? e.mask_selector = t : (0, l.Z)("An invalid session_replay.mask_selector was provided and will not be used", t) }, get block_class() { return "nr-block" }, get ignore_class() { return "nr-ignore" }, get mask_text_class() { return "nr-mask" }, get block_selector() { return e.block_selector }, set block_selector(t) { d(t) ? e.block_selector += ",".concat(t) : "" !== t && (0, l.Z)("An invalid session_replay.block_selector was provided and will not be used", t) }, get mask_input_options() { return e.mask_input_options }, set mask_input_options(t) { t && "object" == typeof t ? e.mask_input_options = { ...t, password: !0 } : (0, l.Z)("An invalid session_replay.mask_input_option was provided and will not be used", t) } }, spa: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 } } }, g = {}, p = "All configuration objects require an agent identifier!"; function h(e) { if (!e) throw new Error(p); if (!g[e]) throw new Error("Configuration for ".concat(e, " was never set")); return g[e] } function v(e, t) { if (!e) throw new Error(p); g[e] = (0, i.D)(t, f()), (0, r.Qy)(e, g[e], "config") } function m(e, t) { if (!e) throw new Error(p); var n = h(e); if (n) { for (var r = t.split("."), i = 0; i < r.length - 1; i++)if ("object" != typeof (n = n[r[i]])) return; n = n[r[r.length - 1]] } return n } const b = { accountID: void 0, trustKey: void 0, agentID: void 0, licenseKey: void 0, applicationID: void 0, xpid: void 0 }, y = {}; function w(e) { if (!e) throw new Error("All loader-config objects require an agent identifier!"); if (!y[e]) throw new Error("LoaderConfig for ".concat(e, " was never set")); return y[e] } function A(e, t) { if (!e) throw new Error("All loader-config objects require an agent identifier!"); y[e] = (0, i.D)(t, b), (0, r.Qy)(e, y[e], "loader_config") } const _ = (0, r.mF)().o; var x = n(385), D = n(6818); const k = { buildEnv: D.Re, customTransaction: void 0, disabled: !1, distMethod: D.gF, isolatedBacklog: !1, loaderType: void 0, maxBytes: 3e4, offset: Math.floor(x._A?.performance?.timeOrigin || x._A?.performance?.timing?.navigationStart || Date.now()), onerror: void 0, origin: "" + x._A.location, ptid: void 0, releaseIds: {}, session: void 0, xhrWrappable: "function" == typeof x._A.XMLHttpRequest?.prototype?.addEventListener, version: D.q4, denyList: void 0 }, E = {}; function j(e) { if (!e) throw new Error("All runtime objects require an agent identifier!"); if (!E[e]) throw new Error("Runtime for ".concat(e, " was never set")); return E[e] } function T(e, t) { if (!e) throw new Error("All runtime objects require an agent identifier!"); E[e] = (0, i.D)(t, k), (0, r.Qy)(e, E[e], "runtime") } function S(e) { return function (e) { try { const t = s(e); return !!t.licenseKey && !!t.errorBeacon && !!t.applicationID } catch (e) { return !1 } }(e) } }, 9567: (e, t, n) => { n.d(t, { D: () => i }); var r = n(50); function i(e, t) { try { if (!e || "object" != typeof e) return (0, r.Z)("Setting a Configurable requires an object as input"); if (!t || "object" != typeof t) return (0, r.Z)("Setting a Configurable requires a model to set its initial properties"); const n = Object.create(Object.getPrototypeOf(t), Object.getOwnPropertyDescriptors(t)), a = 0 === Object.keys(n).length ? e : n; for (let o in a) if (void 0 !== e[o]) try { Array.isArray(e[o]) && Array.isArray(t[o]) ? n[o] = Array.from(new Set([...e[o], ...t[o]])) : "object" == typeof e[o] && "object" == typeof t[o] ? n[o] = i(e[o], t[o]) : n[o] = e[o] } catch (e) { (0, r.Z)("An error occurred while setting a property of a Configurable", e) } return n } catch (e) { (0, r.Z)("An error occured while setting a Configurable", e) } } }, 6818: (e, t, n) => { n.d(t, { Re: () => i, gF: () => a, q4: () => r }); const r = "1.246.1", i = "PROD", a = "CDN" }, 385: (e, t, n) => { n.d(t, { Nk: () => u, Tt: () => s, _A: () => a, cv: () => l, iS: () => o, il: () => r, ux: () => c, v6: () => i, w1: () => d }); const r = "undefined" != typeof window && !!window.document, i = "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self.navigator instanceof WorkerNavigator || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis.navigator instanceof WorkerNavigator), a = r ? window : "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis), o = Boolean("hidden" === a?.document?.visibilityState), s = (a?.location, /iPad|iPhone|iPod/.test(a.navigator?.userAgent)), c = s && "undefined" == typeof SharedWorker, d = ((() => { const e = a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/); Array.isArray(e) && e.length >= 2 && e[1] })(), Boolean(r && window.document.documentMode)), u = !!a.navigator?.sendBeacon, l = Math.floor(a?.performance?.timeOrigin || a?.performance?.timing?.navigationStart || Date.now()) }, 1117: (e, t, n) => { n.d(t, { w: () => a }); var r = n(50); const i = { agentIdentifier: "", ee: void 0 }; class a { constructor(e) { try { if ("object" != typeof e) return (0, r.Z)("shared context requires an object as input"); this.sharedContext = {}, Object.assign(this.sharedContext, i), Object.entries(e).forEach((e => { let [t, n] = e; Object.keys(i).includes(t) && (this.sharedContext[t] = n) })) } catch (e) { (0, r.Z)("An error occured while setting SharedContext", e) } } } }, 8e3: (e, t, n) => { n.d(t, { L: () => u, R: () => c }); var r = n(8325), i = n(1284), a = n(4322), o = n(3325); const s = {}; function c(e, t) { const n = { staged: !1, priority: o.p[t] || 0 }; d(e), s[e].get(t) || s[e].set(t, n) } function d(e) { e && (s[e] || (s[e] = new Map)) } function u() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "feature"; if (d(e), !e || !s[e].get(t)) return o(t); s[e].get(t).staged = !0; const n = [...s[e]]; function o(t) { const n = e ? r.ee.get(e) : r.ee, o = a.X.handlers; if (n.backlog && o) { var s = n.backlog[t], c = o[t]; if (c) { for (var d = 0; s && d < s.length; ++d)l(s[d], c); (0, i.D)(c, (function (e, t) { (0, i.D)(t, (function (t, n) { n[0].on(e, n[1]) })) })) } delete o[t], n.backlog[t] = null, n.emit("drain-" + t, []) } } n.every((e => { let [t, n] = e; return n.staged })) && (n.sort(((e, t) => e[1].priority - t[1].priority)), n.forEach((t => { let [n] = t; s[e].delete(n), o(n) }))) } function l(e, t) { var n = e[1]; (0, i.D)(t[n], (function (t, n) { var r = e[0]; if (n[0] === r) { var i = n[1], a = e[3], o = e[2]; i.apply(a, o) } })) } }, 8325: (e, t, n) => { n.d(t, { A: () => c, ee: () => d }); var r = n(8632), i = n(2210), a = n(234); class o { constructor(e) { this.contextId = e } } var s = n(3117); const c = "nr@context:".concat(s.a), d = function e(t, n) { var r = {}, s = {}, u = {}, f = !1; try { f = 16 === n.length && (0, a.OP)(n).isolatedBacklog } catch (e) { } var g = { on: h, addEventListener: h, removeEventListener: function (e, t) { var n = r[e]; if (!n) return; for (var i = 0; i < n.length; i++)n[i] === t && n.splice(i, 1) }, emit: function (e, n, r, i, a) { !1 !== a && (a = !0); if (d.aborted && !i) return; t && a && t.emit(e, n, r); for (var o = p(r), c = v(e), u = c.length, l = 0; l < u; l++)c[l].apply(o, n); var f = b()[s[e]]; f && f.push([g, e, n, o]); return o }, get: m, listeners: v, context: p, buffer: function (e, t) { const n = b(); if (t = t || "feature", g.aborted) return; Object.entries(e || {}).forEach((e => { let [r, i] = e; s[i] = t, t in n || (n[t] = []) })) }, abort: l, aborted: !1, isBuffering: function (e) { return !!b()[s[e]] }, debugId: n, backlog: f ? {} : t && "object" == typeof t.backlog ? t.backlog : {} }; return g; function p(e) { return e && e instanceof o ? e : e ? (0, i.X)(e, c, (() => new o(c))) : new o(c) } function h(e, t) { r[e] = v(e).concat(t) } function v(e) { return r[e] || [] } function m(t) { return u[t] = u[t] || e(g, t) } function b() { return g.backlog } }(void 0, "globalEE"), u = (0, r.fP)(); function l() { d.aborted = !0, d.backlog = {} } u.ee || (u.ee = d) }, 5546: (e, t, n) => { n.d(t, { E: () => r, p: () => i }); var r = n(8325).ee.get("handle"); function i(e, t, n, i, a) { a ? (a.buffer([e], i), a.emit(e, t, n)) : (r.buffer([e], i), r.emit(e, t, n)) } }, 4322: (e, t, n) => { n.d(t, { X: () => a }); var r = n(5546); a.on = o; var i = a.handlers = {}; function a(e, t, n, a) { o(a || r.E, i, e, t, n) } function o(e, t, n, i, a) { a || (a = "feature"), e || (e = r.E); var o = t[a] = t[a] || {}; (o[n] = o[n] || []).push([e, i]) } }, 3239: (e, t, n) => { n.d(t, { bP: () => s, iz: () => c, m$: () => o }); var r = n(385); let i = !1, a = !1; try { const e = { get passive() { return i = !0, !1 }, get signal() { return a = !0, !1 } }; r._A.addEventListener("test", null, e), r._A.removeEventListener("test", null, e) } catch (e) { } function o(e, t) { return i || a ? { capture: !!e, passive: i, signal: t } : !!e } function s(e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = arguments.length > 3 ? arguments[3] : void 0; window.addEventListener(e, t, o(n, r)) } function c(e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = arguments.length > 3 ? arguments[3] : void 0; document.addEventListener(e, t, o(n, r)) } }, 3117: (e, t, n) => { n.d(t, { a: () => r }); const r = (0, n(4402).Rl)() }, 4402: (e, t, n) => { n.d(t, { Rl: () => o, ky: () => s }); var r = n(385); const i = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"; function a(e, t) { return e ? 15 & e[t] : 16 * Math.random() | 0 } function o() { const e = r._A?.crypto || r._A?.msCrypto; let t, n = 0; return e && e.getRandomValues && (t = e.getRandomValues(new Uint8Array(31))), i.split("").map((e => "x" === e ? a(t, ++n).toString(16) : "y" === e ? (3 & a() | 8).toString(16) : e)).join("") } function s(e) { const t = r._A?.crypto || r._A?.msCrypto; let n, i = 0; t && t.getRandomValues && (n = t.getRandomValues(new Uint8Array(31))); const o = []; for (var s = 0; s < e; s++)o.push(a(n, ++i).toString(16)); return o.join("") } }, 7056: (e, t, n) => { n.d(t, { Bq: () => r, Hb: () => a, oD: () => i }); const r = "NRBA", i = 144e5, a = 18e5 }, 7894: (e, t, n) => { function r() { return Math.round(performance.now()) } n.d(t, { z: () => r }) }, 50: (e, t, n) => { function r(e, t) { "function" == typeof console.warn && (console.warn("New Relic: ".concat(e)), t && console.warn(t)) } n.d(t, { Z: () => r }) }, 2587: (e, t, n) => { n.d(t, { N: () => c, T: () => d }); var r = n(8325), i = n(5546), a = n(3325); const o = { stn: [a.D.sessionTrace], err: [a.D.jserrors, a.D.metrics], ins: [a.D.pageAction], spa: [a.D.spa], sr: [a.D.sessionReplay, a.D.sessionTrace] }, s = new Set; function c(e, t) { const n = r.ee.get(t); e && "object" == typeof e && (s.has(t) || Object.entries(e).forEach((e => { let [t, r] = e; o[t] ? o[t].forEach((e => { r ? (0, i.p)("feat-" + t, [], void 0, e, n) : (0, i.p)("block-" + t, [], void 0, e, n), (0, i.p)("rumresp-" + t, [Boolean(r)], void 0, e, n) })) : r && (0, i.p)("feat-" + t, [], void 0, void 0, n), d[t] = Boolean(r) })), Object.keys(o).forEach((e => { void 0 === d[e] && (o[e]?.forEach((t => (0, i.p)("rumresp-" + e, [!1], void 0, t, n))), d[e] = !1) })), s.add(t)) } const d = {} }, 2210: (e, t, n) => { n.d(t, { X: () => i }); var r = Object.prototype.hasOwnProperty; function i(e, t, n) { if (r.call(e, t)) return e[t]; var i = n(); if (Object.defineProperty && Object.keys) try { return Object.defineProperty(e, t, { value: i, writable: !0, enumerable: !1 }), i } catch (e) { } return e[t] = i, i } }, 1284: (e, t, n) => { n.d(t, { D: () => r }); const r = (e, t) => Object.entries(e || {}).map((e => { let [n, r] = e; return t(n, r) })) }, 4351: (e, t, n) => { n.d(t, { P: () => a }); var r = n(8325); const i = () => { const e = new WeakSet; return (t, n) => { if ("object" == typeof n && null !== n) { if (e.has(n)) return; e.add(n) } return n } }; function a(e) { try { return JSON.stringify(e, i()) } catch (e) { try { r.ee.emit("internal-error", [e]) } catch (e) { } } } }, 3960: (e, t, n) => { n.d(t, { K: () => o, b: () => a }); var r = n(3239); function i() { return "undefined" == typeof document || "complete" === document.readyState } function a(e, t) { if (i()) return e(); (0, r.bP)("load", e, t) } function o(e) { if (i()) return e(); (0, r.iz)("DOMContentLoaded", e) } }, 8632: (e, t, n) => { n.d(t, { EZ: () => d, Qy: () => c, ce: () => a, fP: () => o, gG: () => u, mF: () => s }); var r = n(7894), i = n(385); const a = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net" }; function o() { return i._A.NREUM || (i._A.NREUM = {}), void 0 === i._A.newrelic && (i._A.newrelic = i._A.NREUM), i._A.NREUM } function s() { let e = o(); return e.o || (e.o = { ST: i._A.setTimeout, SI: i._A.setImmediate, CT: i._A.clearTimeout, XHR: i._A.XMLHttpRequest, REQ: i._A.Request, EV: i._A.Event, PR: i._A.Promise, MO: i._A.MutationObserver, FETCH: i._A.fetch }), e } function c(e, t, n) { let i = o(); const a = i.initializedAgents || {}, s = a[e] || {}; return Object.keys(s).length || (s.initializedAt = { ms: (0, r.z)(), date: new Date }), i.initializedAgents = { ...a, [e]: { ...s, [n]: t } }, i } function d(e, t) { o()[e] = t } function u() { return function () { let e = o(); const t = e.info || {}; e.info = { beacon: a.beacon, errorBeacon: a.errorBeacon, ...t } }(), function () { let e = o(); const t = e.init || {}; e.init = { ...t } }(), s(), function () { let e = o(); const t = e.loader_config || {}; e.loader_config = { ...t } }(), o() } }, 7956: (e, t, n) => { n.d(t, { N: () => i }); var r = n(3239); function i(e) { let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = arguments.length > 2 ? arguments[2] : void 0, i = arguments.length > 3 ? arguments[3] : void 0; (0, r.iz)("visibilitychange", (function () { if (t) return void ("hidden" === document.visibilityState && e()); e(document.visibilityState) }), n, i) } }, 3081: (e, t, n) => { n.d(t, { gF: () => a, mY: () => i, t9: () => r, vz: () => s, xS: () => o }); const r = n(3325).D.metrics, i = "sm", a = "cm", o = "storeSupportabilityMetrics", s = "storeEventMetrics" }, 7633: (e, t, n) => { n.d(t, { t: () => r }); const r = n(3325).D.pageViewEvent }, 9251: (e, t, n) => { n.d(t, { t: () => r }); const r = n(3325).D.pageViewTiming }, 5938: (e, t, n) => { n.d(t, { W: () => i }); var r = n(8325); class i { constructor(e, t, n) { this.agentIdentifier = e, this.aggregator = t, this.ee = r.ee.get(e), this.featureName = n, this.blocked = !1 } } }, 7530: (e, t, n) => { n.d(t, { j: () => b }); var r = n(3325), i = n(234), a = n(5546), o = n(8325), s = n(7894), c = n(8e3), d = n(3960), u = n(385), l = n(50), f = n(3081), g = n(8632); function p() { const e = (0, g.gG)();["setErrorHandler", "finished", "addToTrace", "addRelease", "addPageAction", "setCurrentRouteName", "setPageViewName", "setCustomAttribute", "interaction", "noticeError", "setUserId", "setApplicationVersion", "start"].forEach((t => { e[t] = function () { for (var n = arguments.length, r = new Array(n), i = 0; i < n; i++)r[i] = arguments[i]; return function (t) { for (var n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++)r[i - 1] = arguments[i]; let a = []; return Object.values(e.initializedAgents).forEach((e => { e.exposed && e.api[t] && a.push(e.api[t](...r)) })), a.length > 1 ? a : a[0] }(t, ...r) } })) } var h = n(2587); const v = e => { const t = e.startsWith("http"); e += "/", n.p = t ? e : "https://" + e }; let m = !1; function b(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, b = arguments.length > 2 ? arguments[2] : void 0, y = arguments.length > 3 ? arguments[3] : void 0, { init: w, info: A, loader_config: _, runtime: x = { loaderType: b }, exposed: D = !0 } = t; const k = (0, g.gG)(); A || (w = k.init, A = k.info, _ = k.loader_config), (0, i.Dg)(e, w || {}), (0, i.GE)(e, _ || {}), A.jsAttributes ??= {}, u.v6 && (A.jsAttributes.isWorker = !0), (0, i.CX)(e, A); const E = (0, i.P_)(e), j = [A.beacon, A.errorBeacon]; m || (m = !0, E.proxy.assets && (v(E.proxy.assets), j.push(E.proxy.assets)), E.proxy.beacon && j.push(E.proxy.beacon)), x.denyList = [...E.ajax.deny_list || [], ...E.ajax.block_internal ? j : []], (0, i.sU)(e, x), p(); const T = function (e, t) { t || (0, c.R)(e, "api"); const g = {}; var p = o.ee.get(e), h = p.get("tracer"), v = "api-", m = v + "ixn-"; function b(t, n, r, a) { const o = (0, i.C5)(e); return null === n ? delete o.jsAttributes[t] : (0, i.CX)(e, { ...o, jsAttributes: { ...o.jsAttributes, [t]: n } }), A(v, r, !0, a || null === n ? "session" : void 0)(t, n) } function y() { } ["setErrorHandler", "finished", "addToTrace", "addRelease"].forEach((e => { g[e] = A(v, e, !0, "api") })), g.addPageAction = A(v, "addPageAction", !0, r.D.pageAction), g.setCurrentRouteName = A(v, "routeName", !0, r.D.spa), g.setPageViewName = function (t, n) { if ("string" == typeof t) return "/" !== t.charAt(0) && (t = "/" + t), (0, i.OP)(e).customTransaction = (n || "http://custom.transaction") + t, A(v, "setPageViewName", !0)() }, g.setCustomAttribute = function (e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if ("string" == typeof e) { if (["string", "number", "boolean"].includes(typeof t) || null === t) return b(e, t, "setCustomAttribute", n); (0, l.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string, number or boolean type, but a type of <".concat(typeof t, "> was provided.")) } else (0, l.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of <".concat(typeof e, "> was provided.")) }, g.setUserId = function (e) { if ("string" == typeof e || null === e) return b("enduser.id", e, "setUserId", !0); (0, l.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of <".concat(typeof e, "> was provided.")) }, g.setApplicationVersion = function (e) { if ("string" == typeof e || null === e) return b("application.version", e, "setApplicationVersion", !1); (0, l.Z)("Failed to execute setApplicationVersion. Expected <String | null>, but got <".concat(typeof e, ">.")) }, g.start = e => { try { const t = e ? "defined" : "undefined"; (0, a.p)(f.xS, ["API/start/".concat(t, "/called")], void 0, r.D.metrics, p); const n = Object.values(r.D); if (void 0 === e) e = n; else { if ((e = Array.isArray(e) && e.length ? e : [e]).some((e => !n.includes(e)))) return (0, l.Z)("Invalid feature name supplied. Acceptable feature names are: ".concat(n)); e.includes(r.D.pageViewEvent) || e.push(r.D.pageViewEvent) } e.forEach((e => { p.emit("".concat(e, "-opt-in")) })) } catch (e) { (0, l.Z)("An unexpected issue occurred", e) } }, g.interaction = function () { return (new y).get() }; var w = y.prototype = { createTracer: function (e, t) { var n = {}, i = this, o = "function" == typeof t; return (0, a.p)(m + "tracer", [(0, s.z)(), e, n], i, r.D.spa, p), function () { if (h.emit((o ? "" : "no-") + "fn-start", [(0, s.z)(), i, o], n), o) try { return t.apply(this, arguments) } catch (e) { throw h.emit("fn-err", [arguments, this, e], n), e } finally { h.emit("fn-end", [(0, s.z)()], n) } } } }; function A(e, t, n, i) { return function () { return (0, a.p)(f.xS, ["API/" + t + "/called"], void 0, r.D.metrics, p), i && (0, a.p)(e + t, [(0, s.z)(), ...arguments], n ? null : this, i, p), n ? void 0 : this } } function _() { n.e(75).then(n.bind(n, 7438)).then((t => { let { setAPI: n } = t; n(e), (0, c.L)(e, "api") })).catch((() => (0, l.Z)("Downloading runtime APIs failed..."))) } return ["actionText", "setName", "setAttribute", "save", "ignore", "onEnd", "getContext", "end", "get"].forEach((e => { w[e] = A(m, e, void 0, r.D.spa) })), g.noticeError = function (e, t) { "string" == typeof e && (e = new Error(e)), (0, a.p)(f.xS, ["API/noticeError/called"], void 0, r.D.metrics, p), (0, a.p)("err", [e, (0, s.z)(), !1, t], void 0, r.D.jserrors, p) }, u.il ? (0, d.b)((() => _()), !0) : _(), g }(e, y); return (0, g.Qy)(e, T, "api"), (0, g.Qy)(e, D, "exposed"), (0, g.EZ)("activatedFeatures", h.T), T } }, 3325: (e, t, n) => { n.d(t, { D: () => r, p: () => i }); const r = { ajax: "ajax", jserrors: "jserrors", metrics: "metrics", pageAction: "page_action", pageViewEvent: "page_view_event", pageViewTiming: "page_view_timing", sessionReplay: "session_replay", sessionTrace: "session_trace", spa: "spa" }, i = { [r.pageViewEvent]: 1, [r.pageViewTiming]: 2, [r.metrics]: 3, [r.jserrors]: 4, [r.ajax]: 5, [r.sessionTrace]: 6, [r.pageAction]: 7, [r.spa]: 8, [r.sessionReplay]: 9 } } }, r = {}; function i(e) { var t = r[e]; if (void 0 !== t) return t.exports; var a = r[e] = { exports: {} }; return n[e](a, a.exports, i), a.exports } i.m = n, i.d = (e, t) => { for (var n in t) i.o(t, n) && !i.o(e, n) && Object.defineProperty(e, n, { enumerable: !0, get: t[n] }) }, i.f = {}, i.e = e => Promise.all(Object.keys(i.f).reduce(((t, n) => (i.f[n](e, t), t)), [])), i.u = e => "nr-rum-1.246.1.min.js", i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), e = {}, t = "NRBA-1.246.1.PROD:", i.l = (n, r, a, o) => { if (e[n]) e[n].push(r); else { var s, c; if (void 0 !== a) for (var d = document.getElementsByTagName("script"), u = 0; u < d.length; u++) { var l = d[u]; if (l.getAttribute("src") == n || l.getAttribute("data-webpack") == t + a) { s = l; break } } s || (c = !0, (s = document.createElement("script")).charset = "utf-8", s.timeout = 120, i.nc && s.setAttribute("nonce", i.nc), s.setAttribute("data-webpack", t + a), s.src = n), e[n] = [r]; var f = (t, r) => { s.onerror = s.onload = null, clearTimeout(g); var i = e[n]; if (delete e[n], s.parentNode && s.parentNode.removeChild(s), i && i.forEach((e => e(r))), t) return t(r) }, g = setTimeout(f.bind(null, void 0, { type: "timeout", target: s }), 12e4); s.onerror = f.bind(null, s.onerror), s.onload = f.bind(null, s.onload), c && document.head.appendChild(s) } }, i.r = e => { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, i.p = "https://js-agent.newrelic.com/", (() => { var e = { 50: 0, 832: 0 }; i.f.j = (t, n) => { var r = i.o(e, t) ? e[t] : void 0; if (0 !== r) if (r) n.push(r[2]); else { var a = new Promise(((n, i) => r = e[t] = [n, i])); n.push(r[2] = a); var o = i.p + i.u(t), s = new Error; i.l(o, (n => { if (i.o(e, t) && (0 !== (r = e[t]) && (e[t] = void 0), r)) { var a = n && ("load" === n.type ? "missing" : n.type), o = n && n.target && n.target.src; s.message = "Loading chunk " + t + " failed.\n(" + a + ": " + o + ")", s.name = "ChunkLoadError", s.type = a, s.request = o, r[1](s) } }), "chunk-" + t, t) } }; var t = (t, n) => { var r, a, [o, s, c] = n, d = 0; if (o.some((t => 0 !== e[t]))) { for (r in s) i.o(s, r) && (i.m[r] = s[r]); if (c) c(i) } for (t && t(n); d < o.length; d++)a = o[d], i.o(e, a) && e[a] && e[a][0](), e[a] = 0 }, n = self["webpackChunk:NRBA-1.246.1.PROD"] = self["webpackChunk:NRBA-1.246.1.PROD"] || []; n.forEach(t.bind(null, 0)), n.push = t.bind(null, n.push.bind(n)) })(), (() => { var e = i(50); class t { addPageAction(t, n) { (0, e.Z)("Call to agent api addPageAction failed. The page action feature is not currently initialized.") } setPageViewName(t, n) { (0, e.Z)("Call to agent api setPageViewName failed. The page view feature is not currently initialized.") } setCustomAttribute(t, n, r) { (0, e.Z)("Call to agent api setCustomAttribute failed. The js errors feature is not currently initialized.") } noticeError(t, n) { (0, e.Z)("Call to agent api noticeError failed. The js errors feature is not currently initialized.") } setUserId(t) { (0, e.Z)("Call to agent api setUserId failed. The js errors feature is not currently initialized.") } setApplicationVersion(t) { (0, e.Z)("Call to agent api setApplicationVersion failed. The agent is not currently initialized.") } setErrorHandler(t) { (0, e.Z)("Call to agent api setErrorHandler failed. The js errors feature is not currently initialized.") } finished(t) { (0, e.Z)("Call to agent api finished failed. The page action feature is not currently initialized.") } addRelease(t, n) { (0, e.Z)("Call to agent api addRelease failed. The js errors feature is not currently initialized.") } start(t) { (0, e.Z)("Call to agent api addRelease failed. The agent is not currently initialized.") } } var n = i(3325), r = i(234); const a = Object.values(n.D); function o(e) { const t = {}; return a.forEach((n => { t[n] = function (e, t) { return !1 !== (0, r.Mt)(t, "".concat(e, ".enabled")) }(n, e) })), t } var s = i(7530); var c = i(8e3), d = i(5938), u = i(3960), l = i(385); class f extends d.W { constructor(e, t, n) { let i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; super(e, t, n), this.auto = i, this.abortHandler = void 0, this.featAggregate = void 0, this.onAggregateImported = void 0, !1 === (0, r.Mt)(this.agentIdentifier, "".concat(this.featureName, ".autoStart")) && (this.auto = !1), this.auto && (0, c.R)(e, n) } importAggregator() { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; if (this.featAggregate) return; if (!this.auto) return void this.ee.on("".concat(this.featureName, "-opt-in"), (() => { (0, c.R)(this.agentIdentifier, this.featureName), this.auto = !0, this.importAggregator() })); const n = l.il && !0 === (0, r.Mt)(this.agentIdentifier, "privacy.cookies_enabled"); let a; this.onAggregateImported = new Promise((e => { a = e })); const o = async () => { let r; try { if (n) { const { setupAgentSession: e } = await i.e(75).then(i.bind(i, 3228)); r = e(this.agentIdentifier) } } catch (t) { (0, e.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.", t) } try { if (!this.shouldImportAgg(this.featureName, r)) return (0, c.L)(this.agentIdentifier, this.featureName), void a(!1); const { lazyFeatureLoader: e } = await i.e(75).then(i.bind(i, 8582)), { Aggregate: n } = await e(this.featureName, "aggregate"); this.featAggregate = new n(this.agentIdentifier, this.aggregator, t), a(!0) } catch (t) { (0, e.Z)("Downloading and initializing ".concat(this.featureName, " failed..."), t), this.abortHandler?.(), (0, c.L)(this.agentIdentifier, this.featureName), a(!1) } }; l.il ? (0, u.b)((() => o()), !0) : o() } shouldImportAgg(e, t) { return e !== n.D.sessionReplay || !!r.Yu.MO && (!1 !== (0, r.Mt)(this.agentIdentifier, "session_trace.enabled") && (!!t?.isNew || !!t?.state.sessionReplayMode)) } } var g = i(7633); class p extends f { static featureName = g.t; constructor(e, t) { let n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, g.t, n), this.importAggregator() } } var h = i(1117), v = i(1284); class m extends h.w { constructor(e) { super(e), this.aggregatedData = {} } store(e, t, n, r, i) { var a = this.getBucket(e, t, n, i); return a.metrics = function (e, t) { t || (t = { count: 0 }); return t.count += 1, (0, v.D)(e, (function (e, n) { t[e] = b(n, t[e]) })), t }(r, a.metrics), a } merge(e, t, n, r, i) { var a = this.getBucket(e, t, r, i); if (a.metrics) { var o = a.metrics; o.count += n.count, (0, v.D)(n, (function (e, t) { if ("count" !== e) { var r = o[e], i = n[e]; i && !i.c ? o[e] = b(i.t, r) : o[e] = function (e, t) { if (!t) return e; t.c || (t = y(t.t)); return t.min = Math.min(e.min, t.min), t.max = Math.max(e.max, t.max), t.t += e.t, t.sos += e.sos, t.c += e.c, t }(i, o[e]) } })) } else a.metrics = n } storeMetric(e, t, n, r) { var i = this.getBucket(e, t, n); return i.stats = b(r, i.stats), i } getBucket(e, t, n, r) { this.aggregatedData[e] || (this.aggregatedData[e] = {}); var i = this.aggregatedData[e][t]; return i || (i = this.aggregatedData[e][t] = { params: n || {} }, r && (i.custom = r)), i } get(e, t) { return t ? this.aggregatedData[e] && this.aggregatedData[e][t] : this.aggregatedData[e] } take(e) { for (var t = {}, n = "", r = !1, i = 0; i < e.length; i++)t[n = e[i]] = w(this.aggregatedData[n]), t[n].length && (r = !0), delete this.aggregatedData[n]; return r ? t : null } } function b(e, t) { return null == e ? function (e) { e ? e.c++ : e = { c: 1 }; return e }(t) : t ? (t.c || (t = y(t.t)), t.c += 1, t.t += e, t.sos += e * e, e > t.max && (t.max = e), e < t.min && (t.min = e), t) : { t: e } } function y(e) { return { t: e, min: e, max: e, sos: e * e, c: 1 } } function w(e) { return "object" != typeof e ? [] : (0, v.D)(e, A) } function A(e, t) { return t } var _ = i(8632), x = i(4402), D = i(4351); var k = i(5546), E = i(7956), j = i(3239), T = i(7894), S = i(9251); class N extends f { static featureName = S.t; constructor(e, t) { let n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, S.t, n), l.il && ((0, E.N)((() => (0, k.p)("docHidden", [(0, T.z)()], void 0, S.t, this.ee)), !0), (0, j.bP)("pagehide", (() => (0, k.p)("winPagehide", [(0, T.z)()], void 0, S.t, this.ee))), this.importAggregator()) } } var C = i(3081); class P extends f { static featureName = C.t9; constructor(e, t) { let n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, C.t9, n), this.importAggregator() } } new class extends t { constructor(t) { let n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, x.ky)(16); super(), l._A ? (this.agentIdentifier = n, this.sharedAggregator = new m({ agentIdentifier: this.agentIdentifier }), this.features = {}, this.desiredFeatures = new Set(t.features || []), this.desiredFeatures.add(p), Object.assign(this, (0, s.j)(this.agentIdentifier, t, t.loaderType || "agent")), this.run()) : (0, e.Z)("Failed to initial the agent. Could not determine the runtime environment.") } get config() { return { info: (0, r.C5)(this.agentIdentifier), init: (0, r.P_)(this.agentIdentifier), loader_config: (0, r.DL)(this.agentIdentifier), runtime: (0, r.OP)(this.agentIdentifier) } } run() { const t = "features"; try { const r = o(this.agentIdentifier), i = [...this.desiredFeatures]; i.sort(((e, t) => n.p[e.featureName] - n.p[t.featureName])), i.forEach((t => { if (r[t.featureName] || t.featureName === n.D.pageViewEvent) { const i = function (e) { switch (e) { case n.D.ajax: return [n.D.jserrors]; case n.D.sessionTrace: return [n.D.ajax, n.D.pageViewEvent]; case n.D.sessionReplay: return [n.D.sessionTrace]; case n.D.pageViewTiming: return [n.D.pageViewEvent]; default: return [] } }(t.featureName); i.every((e => r[e])) || (0, e.Z)("".concat(t.featureName, " is enabled but one or more dependent features has been disabled (").concat((0, D.P)(i), "). This may cause unintended consequences or missing data...")), this.features[t.featureName] = new t(this.agentIdentifier, this.sharedAggregator) } })), (0, _.Qy)(this.agentIdentifier, this.features, t) } catch (n) { (0, e.Z)("Failed to initialize all enabled instrument classes (agent aborted) -", n); for (const e in this.features) this.features[e].abortHandler?.(); const r = (0, _.fP)(); return delete r.initializedAgents[this.agentIdentifier]?.api, delete r.initializedAgents[this.agentIdentifier]?.[t], delete this.sharedAggregator, r.ee?.abort(), delete r.ee?.get(this.agentIdentifier), !1 } } addToTrace(t) { (0, e.Z)("Call to agent api addToTrace failed. The session trace feature is not currently initialized.") } setCurrentRouteName(t) { (0, e.Z)("Call to agent api setCurrentRouteName failed. The spa feature is not currently initialized.") } interaction() { (0, e.Z)("Call to agent api interaction failed. The spa feature is not currently initialized.") } }({ features: [p, N, P], loaderType: "lite" }) })() })();</script>
<link rel="shortcut icon" href="images/title-icon.png">
<title>Dreamy.ai - Chat and connect with AI Companions</title>
<link rel="canonical" href="http://dreamyai.vip">

  <meta name="description"
    content="Engage with Dreamy.ai&#39;s virtual companions for immersive and personalized chats. Dive deep into intricate dialogues, and liberate your imagination. Experience adaptive AI-driven role-plays today.">
  <!-- Facebook Open Graph data -->
  <meta property="og:title" content="Dreamy.ai - Chat and connect with AI Companions">
  <meta property="og:type" content="website">
  <meta property="og:url" content="http://dreamyai.vip">
  <meta property="og:description"
    content="Engage with Dreamy.ai&#39;s virtual companions for immersive and personalized chats. Dive deep into intricate dialogues, and liberate your imagination. Experience adaptive AI-driven role-plays today.">
  <meta property="og:site_name" content="Dreamy.ai - Chat and connect with AI Companions">
  <meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1">
  <meta name="csrf-param" content="authenticity_token">
  <meta name="csrf-token"
    content="pTE84z2p4OAghGSxjQcFGr7llPHDXXPOMn_sjV13BgBJoCUMuvW95P95XVETRj6a7Spdb6Xa9RcKAUu3y_tjDg">

  <link rel="stylesheet" href="./js/application-0f3c2308946d2d1b69e62b0c26417ad898bc6b6a6b7857e90524059e7bb67d30.css"
    data-turbo-track="reload">


  <script src="./js/jquery-3.6.0.min.js.下载"></script>
  <script src="./js/checkout.js.下载"></script>
  <script src="./common/template.js"></script>
  <script type="text/javascript">
    (function (f, b) {
      if (!b.__SV) {
        var e, g, i, h; window.mixpanel = b; b._i = []; b.init = function (e, f, c) {
          function g(a, d) { var b = d.split("."); 2 == b.length && (a = a[b[0]], d = b[1]); a[d] = function () { a.push([d].concat(Array.prototype.slice.call(arguments, 0))) } } var a = b; "undefined" !== typeof c ? a = b[c] = [] : c = "mixpanel"; a.people = a.people || []; a.toString = function (a) { var d = "mixpanel"; "mixpanel" !== c && (d += "." + c); a || (d += " (stub)"); return d }; a.people.toString = function () { return a.toString(1) + ".people (stub)" }; i = "disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking start_batch_senders people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove".split(" ");
          for (h = 0; h < i.length; h++)g(a, i[h]); var j = "set set_once union unset remove delete".split(" "); a.get_group = function () { function b(c) { d[c] = function () { call2_args = arguments; call2 = [c].concat(Array.prototype.slice.call(call2_args, 0)); a.push([e, call2]) } } for (var d = {}, e = ["get_group"].concat(Array.prototype.slice.call(arguments, 0)), c = 0; c < j.length; c++)b(j[c]); return d }; b._i.push([e, f, c])
        }; b.__SV = 1.2; e = f.createElement("script"); e.type = "text/javascript"; e.async = !0; e.src = "undefined" !== typeof MIXPANEL_CUSTOM_LIB_URL ? MIXPANEL_CUSTOM_LIB_URL : "file:" === f.location.protocol && "//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//) ? "https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js" : "//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js"; g = f.getElementsByTagName("script")[0]; g.parentNode.insertBefore(e, g)
      }
    })(document, window.mixpanel || []);
  </script>
</head>

<body class="bg-main pages discover">
  <div id="app">
    <div
      class="hidden lg:fixed lg:top-[65px] border-[#363636] border-r lg:inset-y-0 lg:left-0 lg:z-50 lg:block lg:w-20 lg:overflow-y-auto lg:pb-4"
      style="width: 100px; background: linear-gradient(0deg, #131313 0%, #131313 100%)">

      <nav class="mt-8">
        <ul role="list" class="flex flex-col items-center space-y-1">

          <li>
            <a href="./explore.html" style="    border: 1px solid #A34AFF; "
              class="h-[70px] w-[70px]  hover:bg-zinc-700 rounded-[10px] border border-white border-opacity-10 flex-col justify-center items-center gap-2 flex mx-auto cursor-pointer">
              <img src="./images/explore-1.png" style="width: 24px">
              <div class="text-center text-white text-xs font-medium leading-tight" style="color: #A34AFF; font-weight: 600;">Explore
              </div>
            </a>
          </li>
          <li class="pt-3">
            <a href="./chart.html"
              class="pt-3 h-[70px] w-[70px]  hover:bg-zinc-700 rounded-[10px] border border-white border-opacity-10 flex-col justify-center items-center gap-2 flex mx-auto cursor-pointer">
              <img src="./images/chat.png" style="width: 24px">
              <div style="color: #90909A;" class="text-center text-white text-xs font-medium leading-tight">Chat</div>
            </a>
          </li>

          <li class="pt-3">
            <a href="./create1.html"
              class="relative h-[70px] w-[70px] hover:bg-zinc-700  rounded-[10px] border border-white border-opacity-10 flex-col justify-center items-center gap-2 flex mx-auto cursor-pointer">
              <img src="./images/create.png" style="width: 24px">
              <div style="color: #90909A;" class="w-16 text-center text-white text-xs font-medium leading-none">Create</div>
            </a>
          </li>
          <li class="pt-3">
            <a href="./myai.html"
              class="h-[70px] w-[70px] hover:bg-zinc-700  rounded-[10px] border border-white border-opacity-10 flex-col justify-center items-center gap-2 flex mx-auto cursor-pointer">
              <img src="./images/myai.png" style="width: 24px">
              <div style="color: #90909A;" class="w-16 text-center text-white text-xs font-medium leading-none">My AI</div>
            </a>
          </li>
        </ul>
        <div class="left-[15px] bottom-[20px] absolute flex-col justify-start items-start gap-2 inline-flex">

          <div
            class="py-2 w-[70px] hover:bg-gray-700 rounded-[10px] border border-white border-opacity-10 flex-col justify-center items-center gap-2 flex mx-auto cursor-pointer toggle-popup"
            @click="feedbackmodal = !feedbackmodal">
            <div class="text-center text-white text-xs font-medium leading-tight">Contact</div>
          </div>
          <a target="_blank" href="https://find-heart.cn-sh2.ufileos.com/sugar/service/Terms%20of%20Service.pdf"
            class=" w-[70px] flex-col justify-center items-center gap-2 flex mx-auto cursor-pointer">
            <div class="text-center text-white text-[8px] font-medium leading-[14px]">Terms of Service</div>
          </a>
          <a target="_blank" href="https://find-heart.cn-sh2.ufileos.com/sugar/service/Privacy%20Policies.pdf"
            class=" w-[70px] flex-col justify-center items-center gap-2 flex mx-auto cursor-pointer">
            <div class="text-center text-white text-[8px] font-medium leading-[14px]">Privacy
              Policy</div>
          </a>
        </div>
      </nav>
    </div>
    <contact v-if='feedbackmodal'></contact>
    <div data-turbo="true" class="space-y-6">
     
      <div
        class="fixed top-0 left-0 right-0 bottom-0 z-50 bg-black bg-opacity-50 backdrop-blur-sm hidden email-modal modal-backdrop feedback-modal"
        data-modal="feedback-modal" style="margin-top: 0px;"></div>
      <div id="staticModal" data-modal-backdrop="static" tabindex="-1" aria-hidden="true"
        class="fixed top-0 left-0 right-0 z-50 w-full p-4 overflow-x-hidden overflow-y-auto md:inset-0 h-[calc(100%-1rem)] max-h-full flex justify-center items-center hidden feedback-modal">
        <div class="relative max-h-full">
          <div class="relative rounded-lg shadow dark:bg-gray-700">
            <div class="w-[356px] h-[210px] relative bg-stone-900 rounded-[10px] border border-neutral-700">
              <div class="w-[396px] h-[354px] relative bg-stone-900 rounded-[10px] border border-neutral-700">
                <div
                  class="w-[146px] h-[222px] left-[-2px] top-[112px] absolute origin-top-left -rotate-90 opacity-60 bg-fuchsia-500 rounded-full blur-[300px]">
                </div>
                <div
                  class="w-[146px] h-[222px] left-[208px] top-[452px] absolute origin-top-left -rotate-90 bg-indigo-500 rounded-full blur-[300px]">
                </div>
                <div class="w-5 h-5 left-[364px] top-[12px] absolute"></div>
                <div class="left-[28px] top-[28px] absolute flex-col justify-start items-start gap-6 inline-flex">
                  <div class="flex-col justify-start items-start gap-2 flex">
                    <div class="text-white text-2xl font-bold leading-[34px]">Contact us
                      <img src="./js/cross-ec898236eb501d13f4d1343d4a90ed1c0afec71efde2ed1e606916d52f2c5331.svg"
                        class="absolute top-[7px] right-[10px] cursor-pointer feedback-modal-close">
                    </div>
                    <div class="w-[340px] text-neutral-400 text-sm font-medium leading-tight">Write your message here.
                    </div>
                  </div>
                  <div class="flex-col justify-start items-start gap-7 flex">
                    <div>
                      <textarea label="false"
                        class="w-[340px] h-[120px] p-[15px] text-white bg-neutral-800 rounded-[10px] border border-neutral-700 justify-start items-center gap-2.5 inline-flex"
                        placeholder="Description" name="feedback[description]" id="feedback_description"></textarea>
                    </div>
                    <input value="482731" autocomplete="off" type="hidden" name="feedback[user_id]"
                      id="feedback_user_id">
                    <input autocomplete="off" type="hidden" name="feedback[conversation_id]"
                      id="feedback_conversation_id">
                    <input autocomplete="off" type="hidden" name="feedback[message_id]" id="feedback_message_id">
                    <button
                      class="w-[340px] px-4 py-3 bg-[#E75275] rounded-[10px] border border-[#E75275] justify-center items-center gap-2 inline-flex">
                      <div class="text-white text-sm font-semibold leading-tight">Send</div>
                    </button>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <html-header></html-header>
    <main class="overflowauto ml-0 lg:ml-[100px] mt-16 lg:mb-0 mb-[56px] h-full">
      <div class="overflow-auto scrollbar">
        <div
          class="hidden md:block px-[68px] overflow-hidden mx-auto relative max-w-7xl bg-cma-banner mt-6 md:mb-0 mb-10 border border-[color:var(--Pop-Up-Stroke,#282828)] flex flex-col rounded-xl border-solid"
          style="background: url(./images/banner.png) no-repeat;background-size: cover;">
          <div class="">
            <div class="gap-5 flex max-md:flex-col max-md:items-stretch max-md:gap-0">
              <div class="flex flex-col items-stretch w-[97%] max-md:w-full">
                <div class="grow max-md:max-w-full max-md:mt-12">
                  <div class="gap-5 flex max-md:flex-col max-md:items-stretch max-md:gap-0">
                    <div class="flex flex-col items-stretch w-[55%] max-md:w-full py-5">
                      <div class=" items-start flex flex-col my-auto max-md:mt-12">
                        <div class="items-start flex max-w-full flex-col">
                          <h1 class="text-primary text-3xl font-bold leading-10 self-stretch">
                            <span class="text-white">Create your own</span>
                            <span class="text-primary">AI Girlfriend</span>
                          </h1>
                          <h2
                            class="text-neutral-200 text-sm font-medium leading-[171.43%] self-stretch w-full mr-px mt-2">
                            Your dream companion awaits! Create your Virtual Girlfriend, shape her look, personality,
                            relationship, and bring her to life in one click. 100% powered by Artificial Intelligence.
                          </h2>
                        </div>
                        <a href="./create1.html?from=discover"
                          class="justify-center items-start primary-gradient flex w-[180px] max-w-full gap-2 mt-10 px-5 py-3 rounded-xl">
                          <img
                            src="./js/magic-wand-bc43a2a37c108cc6308370c0e6fada5385fd848143063f66116694fd9aa075b7.svg"
                            class="aspect-square object-cover object-center w-5 overflow-hidden shrink-0">
                          <div class="text-white text-sm font-semibold leading-[142.86%] self-stretch">
                            Create your AI
                          </div>
                        </a>
                      </div>
                    </div>

                  </div>
                </div>
              </div>
              <div class="flex flex-col items-stretch w-[3%] ml-5 max-md:w-full">
                <img src="./js/red-cross-aee0eed4c6386ca57127b8fd2610a680a57cce43cb3dd95f49a81142f4e49e55.svg"
                  class="object-cover w-8 overflow-hidden relative right-[-40px] mt-6 max-md:mt-12">
              </div>
              <div
                class="absolute right-0 bottom-0 w-[269px] h-[238px] bg-pink-700 bg-opacity-60 rounded-full blur-[200px]">
              </div>
            </div>
          </div>
        </div>

        <div
          class="md:hidden relative rounded-[10px] border-zinc-800 border bg-cma-banner block flex flex-row mx-4 my-6">
          <div class="inline p-5 z-10">
            <div class="text-[18px] font-medium text-white">Create your own</div>
            <div class="text-[18px] font-medium text-primary"> AI Girlfriend</div>
            <a href="./create1.html?from=discover"
              class="mt-4 justify-center items-start primary-gradient flex w-[180px] max-w-full gap-2 mt-10 px-5 py-3 rounded-xl"
              style="background: linear-gradient(90deg, #F056C8 0%, #4237F4 100%);">
              <img src="./js/magic-wand-bc43a2a37c108cc6308370c0e6fada5385fd848143063f66116694fd9aa075b7.svg"
                class="aspect-square object-cover object-center w-5 overflow-hidden shrink-0">
              <div class="text-white text-sm font-semibold self-stretch">
                Create your AI
              </div>
            </a>
          </div>
         
        </div>


        <div class="px-4 py-6">
          <div class="">
            <div class="mx-auto max-w-7xl">
              <div class="w-full text-center">
                <h2 class="text-xl font-semibold tracking-tight text-white md:text-3xl">
                  <div><span class="text-primary font-semibold">Explore</span><span class="text-white"> AI
                      Characters</span></div>
                </h2>
              </div>
              <div id="profiles">
                <div class="mt-[20px] w-full h-11 justify-center gap-2 inline-flex">
                  <a style="cursor: pointer;" @click='tabType(item, index)' data-turbo-stream="true"
                    v-for='(item, index) in typeList' :key='index'
                    :class="index === typeIndex?'px-4 py-2.5 rounded-lg justify-start items-center items-start gap-2 flex bg-[#434343]': 'px-4 py-2.5 rounded-lg justify-start items-center items-start gap-2 flex bg-[#262626]'">
                    <div class="text-white text-xs font-semibold leading-normal"> {{ item.title }}
                    </div>
                  </a>
                  <!-- <a data-turbo-stream="true"
                    class="px-4 py-2.5 rounded-lg justify-start items-center items-start gap-2 flex bg-[#262626]">
                    <div class="text-white text-xs font-semibold leading-normal"> Realistic
                    </div>
                  </a> <a data-turbo-stream="true"
                    class="px-4 py-2.5 rounded-lg justify-start items-center items-start gap-2 flex bg-[#262626]">
                    <div class="text-white text-xs font-semibold leading-normal"> Anime
                    </div>
                  </a>-->
                </div>
                <ul role="list"
                  class="mx-auto mt-6 md:mb-0 mb-10 grid max-w-2xl grid-cols-2 gap-5 sm:grid-cols-2 lg:mx-0 lg:max-w-none lg:grid-cols-4">
                  <a data-turbo-stream="true" v-for='(item, index) in indexList' style="cursor: pointer;" :key='index'
                    @click='listCLi(item)' class="flex flex-col flex-grow" data-method="get">
                    <li>
                      <div class="relative h-[400px] max-h-[400px] w-full max-w-[300px] profile-card">
                        <img fetchpriority="high"
                          class="rounded-lg profile-image first-image w-full object-cover h-[400px] max-h-[400px] w-full max-w-[300px]"
                          :src="item.coverUrl">
                        <img fetchpriority="high"
                          class="rounded-lg profile-image second-image w-full object-cover h-[400px] max-h-[400px] w-full max-w-[300px]"
                          :src="item.coverUrl">
                        <div
                          class="z-10 w-10 h-10 shadow-lg absolute right-3 top-3 primary-gradient rounded-full shadow backdrop-blur-lg">
                          <img
                            src="./js/chat-profile-3188fc1c14a3a8e68784875dddbb03c5badf6d0ef632680a80f0c65d692104fc.svg"
                            class="absolute w-5 h-5 left-[10px] top-[10px]">
                        </div>
                        <div class="absolute bottom-0 px-3 md:px-4 py-3 font-medium z-20">
                          <h1 class="text-white text-md font-semibold"> {{item.aiName}} </h1>
                          <h1 class="text-white font-normal text-xxs"> {{item.age}} years</h1>
                          <p class="text-gray-100 font-normal block text-sm md:text-sm opacity-[0.8] py-2" style="display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;
    height: 70px;">
                            {{item.description}}
                          </p>
                        </div>
                      </div>
                    </li>
                  </a>
                </ul>
              </div>
            </div>
          </div>
        </div>
      </div>
    </main>



    <div id="character-registration-modal" v-if="isNologin">
      <div  class="relative">
        <div 
          class="fixed top-0 left-0 right-0 bottom-0 z-50 bg-black bg-opacity-50 backdrop-blur-sm email-modal modal-backdrop feedback-modal">
        </div>
        <div class="fixed inset-0 z-50 overflow-y-auto">
          <div class="items-end justify-center p-4 flex items-center min-h-screen text-center sm:items-center sm:p-0">
            <div
              class="relative transform overflow-hidden rounded-lg text-left shadow-xl transition-all sm:my-8 bubble-wrapper">
              <div class="absolute right-0 top-0 pr-4 pt-4 sm:block z-20" @click="isNologin = false">
                <button type="button"
                  class="rounded-md text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
                  <span class="sr-only">Close</span>
                  <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
                    aria-hidden="true">
                    <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
                  </svg>
                </button>
              </div>
              <div
                class="flex justify-end rounded-lg border border-neutral-700 w-[320px] h-[478px] md:w-[740px] gradient-wrapper relative">
                <img
                  class="left-0 absolute w-full lg:w-[50%] object-cover h-[65%] lg:h-full"
                  src="./images/16.png">
                <div
                  class="bg-premium-opacity-50 flex bg-transparent z-10 justify-end flex-col items-start lg:gap-10 p-5 lg:p-6 lg:py-12 bg-stone-900 w-full md:w-1/2 h-full rounded-r-lg">
                  <div>
                    <div class="text-white md:text-3xl text-xl font-bold leading-[34px]">
                      <span class="text-primary">Members</span>
                      Only
                    </div>
                    <div class="flex justify-center text-[#E1E1E1] text-sm font-medium">Please login or register in
                      order to use this feature</div>
                  </div>
                  <div class="flex gap-x-4 justify-between mb-5 mt-4 lg:flex-col gap-y-2 w-full">
                    <a href="./sign_up.html"
                      class="px-4 flex-grow py-3 primary-gradient rounded-lg justify-center items-center gap-2 inline-flex registration_button_ga">
                      <div class="text-white text-sm font-semibold leading-tight">Register</div>
                    </a>
                    <a href="./sign_in.html" type="button"
                      class="cursor-pointer flex-grow px-4 py-3 border-[#E75275] border text-[#E75275] rounded-lg justify-center items-center gap-2 inline-flex">
                      <div class="text-sm font-semibold leading-tight">Login</div>
                    </a>
                  </div>
                  <div class="flex justify-center w-full">
                    <div
                      class="w-[223px] h-8 px-2 py-1 bg-white bg-opacity-20 rounded-[10px] justify-start items-center gap-1 inline-flex">
                      <img class="w-4 h-4 relative"
                        src="./images/17.png">
                      <div class="text-neutral-200 text-sm font-semibold leading-normal">Your choices will be saved
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>





    <div class="w-full h-[56px] fixed bottom-0 bg-neutral-950 background-gradient z-20 block lg:hidden">
      <div class="flex p-[15px] justify-between">
        <!-- Discover Icon -->
        <a href="./explore.html">
          <img src="./images/explore-1.png" style="width: 24px">
        </a>
        <!-- My AI Icon -->
        <a href="./myai.html" class="relative">
          <img src="./images/myai.png" style="width: 24px">
        </a>
        <!-- Create AI Icon -->
        <a href="./create1.html" class="relative">
          <img src="./images/create.png" style="width: 24px">
        </a>
        <!-- Chat Icon -->
        <a href="./chart.html">
          <img src="./images/chat.png" style="width: 24px">
        </a>


      </div>
    </div>

</body>

</html>
<script>
  var app = new Vue({
    el: '#app',
    data() {
      return {
        isNologin: false,
        assToken: '',
        feedbackmodal: false,
        typeList: [
          {
            title: 'Models',
            type: "-1"
          },
          {
            title: 'Realistic',
            type: "1"
          },
          {
            title: 'Anime',
            type: "2"
          }
        ],
        indexList: [],
        typeIndex: 0
      }
    },
    components: {
    },
    mounted() {
      const token = localStorage.getItem('token')
      this.assToken = token
      this.$nextTick(function () {
        this.setGril()
      });
      //
      // var msg = await get('https://restapi.amap.com/v3/weather/weatherInfo?parameters')
      // console.log(msg)
      // get('https://restapi.amap.com/v3/weather/weatherInfo?parameters').then(response => {
      //     // this.nearbyList = response.data;
      //     console.log( response, 'responseresponse')
      // }).catch(err => {
      //     console.log(err);
      // });
      //            console.log(axiosPostRequst, 'axiosPostRequst')
      //            axiosPostRequst('https://restapi.amap.com/v3/weather/weatherInfo?parameters','').then(result=>{
      //     console.log(result, 'resultresult');
      // });
      // localStorage.setItem('token', 'aabb123123')
      //  get('https://restapi.amap.com/v3/weather/weatherInfo?parameters').then(response => {
      //     // this.nearbyList = response.data;
      //     console.log( response.data)
      // }).catch(err => {
      //     console.log(err);
      // });
    },
    methods: {
      tabType(item, index) {
        this.typeIndex = index
        this.setGril()
      },
      listCLi(item) {
        // href = "./chart.html"
        // console.log(item, 'iii')
        instance.post("/api/v1/chat/create-chat-session", { toUserId: item.aiId })
          .then((result) => {
            console.log(result)
            // result.data才是真正的返回结果
            if (result.data.code === '200') {
              location.href = "./chart.html?aiId=" + item.aiId
            } else if (result.data.code == '401') {
              this.isNologin = true
            }
            // this.indexList = result.data.data.list
          })
          .catch((err) => {
            console.log(err);
          });
      },
      setGril() {
        instance.post("/ai/v1/get-explore-ai-girl-list", { style: this.typeList[this.typeIndex].type })
          .then((result) => {
            // result.data才是真正的返回结果
            console.log("数据：", result.data.data);
            this.indexList = result.data.data.list
          })
          .catch((err) => {
            console.log(err);
          });
      },
      sexCli(sex) {
        console.log(sex, 'sss')
      }
    }
  })

</script>